<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>强制类型转换</title>
</head>
<body>
    
</body>
</html>
<script>
    /*
        强制类型转换
            - 将一个数据类型强制转换为其他的数据类型
            - 类型转换只要指 ，将其他的数据类型，转换为
                String Number Boolean

    */
    /*
        将其他的数据类型转换为String
            方式一：
                - 调用被转换数据类型的 toString() 方法
                - 该方法不会影响到原变量 ， 他会将转换的结果转回
                - 但是要注意 : null 和 undefined这两个值没有toString()方法
                    如果调用他们的方法，会报错

            方式二：
                - 调用String() 函数，并将被转换的数据，作为参数传递给函数
                - 使用String() 函数做强制类型转换时，
                    对于 Number 和 Boolean 实际上就是调用 toString()方法
                    但是对于 null 和 undefined, 就不会调用 toString()方法
                        他会将 null(字面量) 直接转换为 "null"(字符串)
                        将 undefined 直接转换为 "undefined"
    */
   var a = 123;
   
   //调用 a toString()方法
   //调用 xxx 的 yyy() 方法,  就是xxx.yyy()

   a.toString();  //- 该方法不会影响到原变量 ， 他会将转换的结果转回

   var b = a.toString();  //正确转换 把转换后的值，赋值给 b

   a = a.toString(); //将转换后的a 赋值给a，将原本的a 覆盖掉 (变量的先后顺序)

   var c = true;
   c = c.toString();

    var d = null;
   // d = d.toString();
     //报错 

    var e = undefined;
   // e = e.toString();
     //报错

     var f = "123456";
     //调用String()函数，来将f转换为字符串
     f = String(f);

     var g = String(d);

   console.log(typeof a);
   console.log(a);

   console.log(typeof b);
   console.log(b);

   console.log(typeof c);
   console.log(c);

   console.log(typeof d);
   console.log(d);

   console.log(typeof e);
   console.log(e);
   
   console.log(typeof f);
   console.log(f);

   console.log(typeof g);
   console.log(g);

   console.log(typeof h);

</script>